嗨我是k66,前一篇提到小豬Oink與豬油博士為了拯救豬腳城,需要寫出開機畫面,嚇唬邪惡城主。因此本篇以故事對話來揭開我們的project30的長相,及必備知識吧!
以下正文
小豬Oink: 博士那我們要怎麼製作開機畫面呀?
豬油博士: 開機畫面轉圈圈背後的組成牽涉到CPU與作業系統(OS)之間控制權的移轉,
我們要自己寫一個作業系統與其對應的bootloader與kernel。
小豬Oink: 作業系統我明白,就是Windows、Linux、MacOS嘛!
豬油博士: 沒錯,此三者皆為x86系列常見的作業系統,我們等下要實作的開機畫面正是基於x86架構。
小豬Oink: 那什麼是bootloader、kernel呢?
豬油博士: 作業系統的檔案存在硬碟(Hard Disk)中,在開機進到作業系統之間,
CPU必須由bootloader去載入相依程式,再將控制權交給kernel,最後kernel再把控制權交給作業系統。
小豬Oink: 那博士說的作業系統、bootloader及kernel要怎麼寫呢?
豬油博士: 既然Oink你剛剛提到了Windows、Linux、MacOS,想問你有看過這三個作業系統的開機畫面嗎?
小豬Oink: 有!Windows在開機時會轉圈圈,Linux的好像有一個選單讓人選擇開機[圖1],
MacOS的會有一條進度條[圖2]。
豬油博士: 你理解的沒錯,博士幫你補充下,Linux的選單是GRUB,它是一種bootloader。
每一個作業系統都配有一個bootloader(又稱boot manager)[註1]。
小豬Oink: 原來如此。
豬油博士: 那你有注意到你舉例的三個作業系統中,有一個作業系統沒有設計開機選單,
在開機時不讓人選則進入其他的作業系統嗎?
小豬Oink: 我沒想過耶…不會是Linux,MacOS好像也能選雙系統…所以是Windows!
豬油博士: 答對了!你看微軟設計的Windows Boot Manager多麼霸道[註2]呀!
小豬Oink: 博士的意思是,我們設計的bootloader也效仿微軟,設計成只接受進入我們指定的作業系統?!
豬油博士: 答對!真是聰明的小豬。
[註1] Loader有多種,bootloader是用來開機的loader,loader本身也能呼叫其他loader,比如圖中GRUB這個boot loader可以選擇呼叫Windows Boot Manager這個loader。
[註2] Windows Boot Manager預設只讀Windows作業系統,但工具如EasyBCD可讓Windows Boot Manager讀其他作業系統。
本書特色: 基於x86架構設計,兼容於市面上大部分機器,不用擔心完成後沒地方嘗試~
下述排版未來會編輯得讓人眼睛更舒適,請先見諒~若有人能教怎麼讓下述排版如何改進就太感謝了!